import config from '@/config.js'
import {getStorage} from '@/util/auth.js';
import Vue from 'vue'
export default function(parameter){
	parameter.header={};
	const token=getStorage('token');
	if(token){
		parameter.header['token']=token;
	}
	parameter.header['Content-Type']='application/x-www-form-urlencoded';
	parameter.url=config.requestUrl+parameter.url
	return new Promise((resolve,reject)=>{
		uni.request({
			...parameter,
			success(e){
				uni.hideLoading().then(()=>{
					if(e.statusCode!=200){
						uni.showToast({
							title:'请求失败',
							icon:'none'
						})
						reject();
					}else{
						const response=e.data;
						switch(response.code){
							case 200:
								resolve(response.data);
								break;
							case 405:
								uni.showToast({
									title:'登录信息已过期，请重新登录',
									icon:'none',
									duration:2000,
									success:()=>{
										Vue.prototype.$store.commit('user/SET_TOKEN', null)
										Vue.prototype.$store.commit('user/SET_USER', null)
										uni.$TUIKit && uni.$TUIKit.logout()
										setTimeout(()=>{
											uni.reLaunch({
												url:'/pages/home/index'
											})
										},2000)
									}
								})
								
								break;
							case 403:
								uni.showToast({
									title:'暂无权限',
									icon:'none',
									duration:2000,
									success() {
										setTimeout(()=>{
											reject();
										},2000)
									}
								})
								break;
							case 500:
								uni.showToast({
									title:response.msg,
									icon:'none',
									duration:2000,
									success() {
										setTimeout(()=>{
											reject();
										},2000)
									}
								})
								break;
							default:
								uni.showToast({
									title:response.msg,
									icon:'none',
									duration:2000,
									success() {
										setTimeout(()=>{
											reject();
										},2000)
									}
								})
								break;
						}
					}
				})
			},
			fail(){
				uni.hideLoading().then(()=>{
					uni.showToast({
						title:'请求失败',
						icon:'none',
						duration:2000,
						success() {
							setTimeout(()=>{
								reject();
							},2000)
						}
					})
				})
			}
		})
	})
}